$.namespace('sys.user');

sys.user = function() {
	var url = '',method = '';
	return {
		init : function() {
			this.initGrid();
			this.initComponents();
		},
		initComponents : function(){
			$('#fm').find('input[id=dept]').combotree({
				url : ctxRest + '/sys/department/list',
				idFiled : 'id',
				textFiled : 'name',
				parentField : 'parentId',
				lines : true,
				onLoadSuccess : function(node, data){
					$(this).tree('collapseAll');
				}
			});
			
			$('#searchfm').find('input[id=dept]').combotree({
				url : ctxRest + '/sys/department/list',
				idFiled : 'id',
				textFiled : 'name',
				parentField : 'parentId',
				lines : true,
				onLoadSuccess : function(node, data){
					$(this).tree('collapseAll');
				}
			});
			
			$('#roleList').combobox({
				valueField : 'id',
				textField : 'name',
				editable : false,
				multiple : true,
				url : ctxRest + '/sys/role/list',
				onLoadSuccess : function(res){
				}
			})
		},
		initGrid : function() {
			$('#grid').datagrid({
				//title : '用户列表',
				url : ctxRest + '/sys/user/list',
				contentType : 'application/json;charset=utf-8',
				fit : true,
				fitColumns : true,
				rownumbers : true,
				nowrap : true,
				striped : true,
				pageList : [ 10, 15, 20, 30 ],
				pageSize : 20,
				pagination : true,
				remoteSort : false,
				singleSelect : true,
				border : false,
				idField : 'ID',
				columns : [ [ {
					title : '用户名',
					field : 'loginName',
					width : 80
				}, {
					title : '名称',
					field : 'name',
					width : 80
				}, {
					title : '部门',
					field : 'dept',
					width : 80,
					formatter : function (value, row, index) {
						return value ? value.name : '';
					}
				}, {
					title : '联系方式',
					field : 'phone',
					width : 100
				}, {
					title : '上次登录时间',
					field : 'loginDate',
					width : 100
				}, {
					title : '备注',
					field : 'remarks',
					width : 120
				} ] ],
				toolbar : '#toolbar',
				onDblClickRow : function(index, row) {
					sys.user.showEditForm();
				}
			});
		},
		showForm : function() {
			$('#fmDlg').show().dialog('open');
			$('#fm').form('clear');
			$('#fm').find('input[id=loginName]').textbox('enable');
			url = ctxRest + '/sys/user/create';
			method = 'POST';
		},
		showEditForm : function() {
			var row = $('#grid').datagrid('getSelected');
			if (!row) {
				$.messager.alert('提示', '请选择要修改的用户.', 'info');
				return;
			}
			url = ctxRest + '/sys/user/update';
			method = 'POST';
			$('#fm').find('input[id=loginName]').textbox('disable');
			$.ajax({
				type : 'Get',
				url : ctxRest + '/sys/user/get?id=' + row.id,
				success : function(result){
					$('#fmDlg').show().dialog('open');
					$('#fm').form('clear');
					$('#fm').form('load', result);
					if (result.dept) {
						$('#fm').find('input[id=dept]').combotree('setValue', result.dept.id);
					}
					if (result.roleList && result.roleList.length > 0) {
						var roles = [];
						for (var i = 0;i < result.roleList.length;i++) {
							roles.push(result.roleList[i].id);
						}
						$('#fm').find('input[id=roleList]').combobox('setValues', roles);
					}
				}
			})
		},
		getFormData : function(){
			var obj;
			var fm = $('#fm');
			if (fm.form('validate')) {
				obj = $.serializeObject(fm);
				var roles = obj.roleList;
				if (roles) {
					obj.roleList = [];
					roles = roles.split(',');
					for (var i = 0;i < roles.length;i++) {
						obj.roleList.push({id : roles[i]});
					}
				}
			}
			return obj;
		},
		saveOrupdate : function() {
			var obj = sys.user.getFormData();
			if (obj) {
				if (!obj.id) {
					var user = sys.user.findByLoginName(obj.loginName);
					if (user) {
						$.messager.alert('提示', '用户名重复，请填写其他用户名', 'info');
						return;
					}
				} 
				$.ajax({
					type : method,
					url : url,
					contentType : 'application/json;charset=UTF-8',
					data : JSON.stringify(obj),
					beforeSend : function(){
						progressLoad();
					},
					success : function(result){
						progressClose();
						if (result && result.errcode == 0) {
							$('#fmDlg').dialog('close');
							$('#grid').datagrid('reload');
						}
					}
				})
			}
		},
		remove : function() {
			var row = $('#grid').datagrid('getSelected');
			if (!row) {
				$.messager.alert('提示', '请选择要删除的用户.', 'info');
				return;
			}
			$.messager.confirm('提示', '您确定要删除?', function(flag){
				if (flag) {
					progressLoad();
					$.ajax({
						type : 'GET',
						url : ctxRest + '/sys/user/delete?id=' + row.id,
						success : function(result){
							progressClose();
							if (result && result.errcode == 0) {
								$('#grid').datagrid('reload');
							}
						}
					});
				}
			});
		},
		findByLoginName : function(loginName){
			var obj = {};
			$.ajax({
				type : 'Get',
				url : ctxRest + '/sys/user/findByLoginName?loginName=' + loginName,
				async : false,
				success : function(result){
					obj = result;
				}
			})
			return obj;
		},
		initPassword : function(){
			var row = $('#grid').datagrid('getSelected');
			if (!row) {
				$.messager.alert('提示', '请选择要初始化密码的用户.', 'info');
				return;
			}
			$.messager.confirm('提示', '你确定要初始化该用户密码?', function(flag){
				if (flag) {
					$.ajax({
						type : 'Get',
						url : ctxRest + '/sys/user/init_password?id=' + row.id,
						beforeSend : function() {
							progressLoad();;
						},
						success : function(result){
							progressClose();
							if (result && result.errcode == 0) {
								$.messager.alert('提示', '密码初始化成功.', 'info');
							} else if (result.errcode == 1){
								$.messager.alert('提示', result.errmsg, 'info');
							}
						}
					})
				}
			})
		},
		search : function(){
			$('#grid').datagrid('load', $.serializeObject($('#searchfm')));
			$('#searchDlg').dialog('close');
		}
	};
}();

$(function() {
	sys.user.init();
})